package com.zhf.rabbitmq.workqueue;

import com.rabbitmq.client.*;
import com.zhf.rabbitmq.utils.RabbitConstant;
import com.zhf.rabbitmq.utils.RabbitUtil;

import java.io.IOException;

/**
 * @author: 曾鸿发
 * @create: 2022-01-08 18:40
 * @description：消费者
 **/
public class SMSSender3 {

    public static void main(String[] args) throws Exception{
        Connection connection = RabbitUtil.getConnection();
        final Channel channel = connection.createChannel();
        channel.queueDeclare(RabbitConstant.QUEUES_SMS, false, false, false, null);

        // 如果不写basicQos(1)，则自动MQ将所有请求平均发送给所有消费者
        // basicQos， MQ不再对消费者一次发送多个请求，而是消费者处理完一个消息后（确认后），再从队列中获取一个新的
        channel.basicQos(1);    // 处理完一个取一个
        channel.basicConsume(RabbitConstant.QUEUES_SMS, false, new DefaultConsumer(channel){
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
                String jsonSMS = new String(body);
                System.out.println("SMSSender3-短信发送消息陈功：" + jsonSMS);

                channel.basicAck(envelope.getDeliveryTag(), false);
            }
        });
    }
}
